tg-me.com/vuefaq/685
Last Update:
Как организовать конфигурационные параметры в приложении?
Наиболее удобна, имхо, следующая конфигурация конфигов.
Есть, грубо говоря, .env
, .env.staging
, .env.local
Локально используется .env.local
, он в гитигноре, и у каждого разработчика свой. Если работаешь один, или у всех локально одна конфигурация - .env.local
не нужен.
При CI/CD
.env.staging
заменяет .env
. При этом используются / добавляются в конфиг (для бэка) нужные секреты. У CI/CD
свой конфиг.
Есть два варианта распределения параметров по конфиг файлам.
- Первый - .env
хранит основные параметры, а .env.local
и .env.staging
только переопределяют нужные (merge).
- Второй - в каждом из них хранится полная конфигурация.
У обоих свои плюсы и минусы. Первый - удобней, можно легко добавлять общие конфигурационные параметры и не просить всех разработчиков обновить свой .env.local
. Второй - наглядней, при CI/CD
можно просто заменять файлы.
Данная система позволяет, например, легко переключиться и поработать на локальном фронтенде со staging
бэкендом вместо локального. Можно просто написать скрипт для этого в package.json
.
В такой системе никто случайно не запушит свой конфиг в репозиторий, никто не имеет доступа к секретам и чужим параметрам.env
/ dotenv
- довольно старая штука и недостаточно гибка для реализации удобных конфигов, поэтому я храню конфиги в json
/ js
файлах. Их легко объединять в коде и, вообще, закладывать нужную тебе логику. Ну и древовидная система конфигурационных параметров намного читабельней и удобней в работе в коде.
Доступ к конфигу в приложении:import { config } from "@/app-config"
#tip #cicd
BY Vue-FAQ
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/vuefaq/685